package com.gewu.pm.ui.activity.account;

import android.content.Context;
import android.content.Intent;
import android.os.Bundle;

import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import com.gewu.pm.R;
import com.gewu.pm.app.AppActivity;
import com.gewu.pm.bean.TestBean;
import com.gewu.pm.other.IntentKey;
import com.gewu.pm.ui.adapter.SwitchAccountAdapter;
import com.hjq.bar.TitleBar;

import java.util.ArrayList;
import java.util.List;

import cn.we.swipe.helper.WeSwipe;
import cn.we.swipe.helper.WeSwipeHelper;

/**
 * 切换账号页面
 */
public final class SwitchAccountActivity extends AppActivity
        implements SwitchAccountAdapter.OnItemClickListener,
        SwitchAccountAdapter.OnDeleteListener,
        SwitchAccountAdapter.OnAddAccountListener {

    private TitleBar mTitleBar;
    private RecyclerView mRecyclerView;
    private SwitchAccountAdapter mAdapter;

    private String mCurrentAccountId; // 当前账号ID
    private List<TestBean> mAccountList = new ArrayList<>();

    /**
     * 启动方法
     *
     * @param context   上下文
     * @param accountId 当前账号ID
     */
    public static void start(Context context, String accountId) {
        Intent intent = new Intent(context, SwitchAccountActivity.class);
        intent.putExtra(IntentKey.ID, accountId);
        context.startActivity(intent);
    }

    @Override
    protected int getLayoutId() {
        return R.layout.activity_switch_account;
    }

    @Override
    protected void initView(Bundle savedInstanceState) {
        mTitleBar = findViewById(R.id.tb_title);
        mRecyclerView = findViewById(R.id.rv_list);

        // 设置标题栏
        mTitleBar.setOnTitleBarListener(this);

        // 设置列表
        mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
        mAdapter = new SwitchAccountAdapter(this);
        mAdapter.setOnItemClickListener(this);
        mAdapter.setOnDeleteListener(this);
        mAdapter.setOnAddAccountListener(this);
        mRecyclerView.setAdapter(mAdapter);

        // 设置侧滑删除（参考 ShoppingCartActivity）
        WeSwipe weSwipe = WeSwipe.attach(mRecyclerView).setType(WeSwipeHelper.SWIPE_ITEM_TYPE_FLOWING);
        mAdapter.setWeSwipe(weSwipe);
    }

    @Override
    protected void initData() {
        // 获取当前账号ID
        mCurrentAccountId = getString(IntentKey.ID);
        
        // 设置当前账号ID给 Adapter
        mAdapter.setCurrentAccountId(mCurrentAccountId);

        // 加载数据
        loadData();
    }

    /**
     * 加载数据
     */
    private void loadData() {
        mAccountList.clear();

        // 创建测试账号数据
        mAccountList.add(new TestBean("1", "祖名豆制品股份有限公司"));
        mAccountList.add(new TestBean("2", "祖名豆制品股份有限公司"));
        mAccountList.add(new TestBean("3", "祖名豆制品股份有限公司"));

        // 最后添加一个"添加账号"项（id 为 null 表示添加账号）
        mAccountList.add(new TestBean(null, "添加账号"));

        mAdapter.setData(mAccountList);
    }

    @Override
    public void onItemClick(int position, TestBean item) {
        // 点击账号 Item
        toast("选择账号：" + item.getName() + "，ID：" + item.getId());
        // TODO: 将数据带回上一个页面
    }

    @Override
    public void onDelete(int position, TestBean item) {
        // 删除账号
        toast("删除账号：" + item.getName());
        
        // 只调用 Adapter 的删除方法（内部会从 mList 中删除）
        mAdapter.removeAt(position);
    }

    @Override
    public void onAddAccount() {
        // 添加账号
        toast("添加账号");
        // TODO: 跳转到登录页面或添加账号页面
    }
}

